#include "Log.hpp"
#include "ThreadPool.hpp"
#include <memory>
#include "Task.hpp"
using namespace LogModule;
using namespace ThreadPoolModule;

int main()
{
    Enable_Console_Log_Strategy(); // 开启控制台日志策略，在显示器上输出
    // ThreadPool<task_t>*tp=new ThreadPool<task_t>();
    // tp->Start();
    int count = 10;
    //有一个单例。如果线程池本身，会被多线程获取呢？
    while (count--)
    {
        sleep(1); // 睡眠1秒钟，模拟任务处理时间

        // 往后我们使用线程池我们就不需要进行对象的创建操作了，我们直接使用单例就行了ThreadPool<task_t>::GetInstance()
        ThreadPool<task_t>::GetInstance()->Enqueue(Download); // 向线程池中添加任务
    }
    ThreadPool<task_t>::GetInstance()->Stop(); // 停止线程池
    ThreadPool<task_t>::GetInstance()->Join(); // 等待线程池中的所有线程退出
    return 0;
}

// int main()
// {
//     // logger.EnableConsoleLogStrategy();
//     // logger(LogLevel::DEBUG, "main.cc", 10) << "hello world";
//     // LogModule::logger(LogModule::LogLevel::INFO, "main.cpp", __LINE__) << "This is an info log message";
//     // return 0;
// }
